/* eslint-disable no-unused-vars */
/* eslint-disable no-redeclare */

// 1.移除数组 [1, 2, 3, 4, 2] 中的2。不要直接修改数组，结果返回新的数组
/*
var a=[1, 2, 3, 4, 2]
var b=[]
var n=0//2的个数
for(let i=0;i<a.length;i++){
if(a[i]===2){
    n++
}
}
for(let i=0;i<n;i++){
    b[0]=a.indexOf(2)
    b[1]=a.indexOf(2,b[0]+1)
}
console.log(a.slice(0,b[0]).concat(a.slice(b[0]+1,b[1])));
*/

// 2.定义一个函数,能在数组 [1, 2, 3, 4, 2] 的 "2"后面添加元素 "JavaScript"。不要直接修改数组 arr，结果返回新的数组
/*
var a=[1, 2, 3, 4, 2],b=a
for(let i=0;i<a.length;i++){
if(a[i]===2){
    b.splice(i+1,0,"JavaScript")
}
}
console.log(b);
*/
// 3.统计数组 [1, 2, 3, 4, 2] 中2出现的次数
/*
var a=[1, 2, 3, 4, 2]
var n=0
for(let i=0;i<a.length;i++){
if(a[i]===2)n++
}
console.log('2出现的次数为',n);
*/
// 4.找出数组 [1, 2, 3, "JavaScript", 4, "JavaScript", 2, 4, "JavaScript"] 中重复出现过的元素,并用数组将重复元素装起来输出
/*
var a=[1, 2, 3, "JavaScript", 4, "JavaScript", 2, 4, "JavaScript"]
var s=[]
for(let i=0;i<a.length;i++){
if(a.includes(a[i],i+1)&& !s.includes(a[i])){
    s.push(a[i])
}
}//lastIndexOf与indexOf结合，比较下标，不同则元素有重复
console.log(s);
*/
// 5.在数组里面输出年龄小于17的对象
let arr5 = [
    {
        name: '111',
        sex: 'boy',
        age: 18,
    },
    {
        name: '222',
        sex: 'girl',
        age: 17,
    },
    {
        name: '333',
        sex: 'boy',
        age: 16,
    },
    {
        name: '444',
        sex: 'girl',
        age: 15,
    },
    {
        name: '555',
        sex: 'boy',
        age: 20,
    },
];
/*
for(let i=0;i<arr5.length;i++){
    if(arr5[i].age<17){
    console.log(arr5[i])
    }
}
*/
// 6. 数组扁平化, 把数组[1, [2, [3, 4, 5]]]转成[1, 2, 3, 4，5]

var a = [1, [2, [3, 4, 5]]];
//a.flat(Infinity)//数组平铺
function f(a) {
    let b = [];
    for (let i = 0; i < a.length; i++) {
        if (!Array.isArray(a[i])) b.push(a[i]);
        else {
            b = b.concat(f(a[i]));
        }
    }
    return b;
}
//console.log(f(a));

// 7. 使用reduce实现[1,2,3,4,9]数组中所有成员的和
/*var a=[1,2,3,4,9]
function f(a,b){
    return a+b
}
console.log(a.reduce(f));
*/
// 8. 数组去重的方法 (4种)
var a = [1, 2, 1, 4, 2, '1', 2];
//法一
var aa = a.sort();
for (let i = 0; i < aa.length; i++) {
    if (aa.indexOf(aa[i]) != aa.lastIndexOf(aa[i])) {
        aa.splice(
            aa.indexOf(aa[i]) + 1,
            aa.lastIndexOf(aa[i]) - aa.indexOf(aa[i])
        );
    }
}
console.log(aa);
//2
